#!/usr/bin/env bash
# GitDiagram 一键启动脚本

# 颜色代码
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m' # 重置颜色

# 输出带颜色的消息
echo -e "${BLUE}===== GitDiagram 一键启动工具 =====${NC}"
echo -e "${YELLOW}此脚本将启动完整的GitDiagram应用环境，包括前端、后端和数据库${NC}"

# 检查Docker和Docker Compose是否已安装
if ! [ -x "$(command -v docker)" ]; then
  echo -e "${RED}错误：Docker未安装。请先安装Docker。${NC}"
  echo -e "安装指南: https://docs.docker.com/engine/install/"
  exit 1
fi

if ! [ -x "$(command -v docker-compose)" ]; then
  echo -e "${YELLOW}警告：未检测到docker-compose命令，尝试使用docker compose...${NC}"
  COMPOSE_CMD="docker compose"
else
  COMPOSE_CMD="docker-compose"
fi

# 检查.env文件
if [ ! -f ".env" ]; then
  echo -e "${YELLOW}未找到.env文件，将从.env.example创建${NC}"
  cp .env.example .env
  echo -e "${GREEN}.env文件已创建，请编辑添加您的API密钥${NC}"
fi

# 检查环境变量
DB_PASSWORD=$(grep -o "DB_PASSWORD=.*" .env | cut -d= -f2 || echo "")
if [ -z "$DB_PASSWORD" ]; then
  # 生成随机密码并添加到.env
  RANDOM_PASSWORD=$(openssl rand -base64 12 | tr -dc 'a-zA-Z0-9' | head -c 12)
  echo "DB_PASSWORD=$RANDOM_PASSWORD" >> .env
  echo -e "${GREEN}已生成随机数据库密码并添加到.env${NC}"
fi

# 构建并启动容器
echo -e "${BLUE}启动GitDiagram服务...${NC}"
$COMPOSE_CMD -f docker-compose.dev.yml up -d

# 检查服务状态
echo -e "${BLUE}检查服务状态...${NC}"
sleep 5

if $COMPOSE_CMD -f docker-compose.dev.yml ps | grep -q "Up"; then
  echo -e "${GREEN}GitDiagram服务已成功启动！${NC}"
  echo -e "${GREEN}前端地址: http://localhost:3000${NC}"
  echo -e "${GREEN}后端API地址: http://localhost:8000${NC}"
  echo -e "${YELLOW}首次启动可能需要一些时间加载，请耐心等待${NC}"
  echo -e "${BLUE}查看日志: $COMPOSE_CMD -f docker-compose.dev.yml logs -f${NC}"
else
  echo -e "${RED}服务启动可能出现问题，请检查日志:${NC}"
  echo -e "${BLUE}$COMPOSE_CMD -f docker-compose.dev.yml logs${NC}"
fi

echo -e "${YELLOW}停止服务命令: $COMPOSE_CMD -f docker-compose.dev.yml down${NC}" 